const http = require("http");
const url = require("url");
const fs = require("fs");
const server = http.createServer((req, res) => {
  // 在node.js中，http协议如果不设置响应头，中文的话在客户端浏览器是会乱码的，那么设置响应头的目的是什么，又如何设置响应头？

  // 目的是为了告诉浏览器我发送的数据是什么类型的，你应该用什么格式来编码显示。如果不设置，会自动生成一个响应头，但中文的话浏览器会乱码。
  res.setHeader("Content-Type", "text/html;charset=utf-8");
  console.log(req.url);
  // url.parse() 方法会解析一个 URL 字符串并返回一个 URL 对象
  let { pathname, query } = url.parse(req.url, true);
  // console.log(pathObj);
  if (pathname === "/adduser") {
    let data = fs.readFileSync("./register.html");
    res.end(data);
  } else if (pathname === "/showuser") {
    // 接收传入的query参数；
    console.log(query);
    // 把这个数据存起来 ，需要追加数据；存在一个 data.json文件里
    // data.json里的数据获取到 ，再之前的数据基础上添加query对象；
    // 获取数据
    // require("./data.json"); 自动把json字符串转成对象或者数组；
    let data = JSON.parse(fs.readFileSync("./data.json", "utf-8"));
    //    console.log(data);
    //    console.log("[]");
    //    console.log(typeof data);
    data.push(query); // [{name:"123",age:20}]

    // 需要把添加完毕的数据重新写入到data.json里；
    fs.writeFileSync("./data.json", JSON.stringify(data));

    // 显示数据 ；
    let showdata = JSON.parse(fs.readFileSync("./data.json", "utf-8"));
    // console.log(showdata);
    // 持久化数据 ： 1.服务器 2.浏览器 ；
    let str = `<ul>`;
    showdata.forEach((item) => {
      str += `<li>姓名是:${item.username};年龄是${item.age}</li>`;
    });
    str += `</ul>`;
    res.end(str);
  }
});
server.listen(8989);

// 需要2个页面 ：一个是注册页面  另一个显示注册的用户；
